package com.itlong.cloud.property.dao;

import com.itlong.cloud.POJO.DTO.property.AppUserGetAuthRelationsDTO;
import com.itlong.cloud.POJO.PO.AppAuthRelationsPO;
import com.itlong.cloud.abstracts.IAbstractBaseDao;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *       物业系统用户关联关系信息数据访问接口
 * </desc>
 *
 * @createDate 2017/09/25
 */
@Mapper
@Repository
public interface IPropertyAppAuthRelationsDao extends IAbstractBaseDao<AppAuthRelationsPO>{
    /**
     * <desc>
     *      查询App相关用户信息接口
     * </desc>
     * @param params
     * @return
     * @author zhangs
     * @createDate 2017/09/20
     */
    List<AppUserGetAuthRelationsDTO> getUserRelationsByPId(Map<String, Object> params);

    /**
     * <desc>
     *     保存App用户与用户授权关系接口
     * </desc>
     * @param params
     * @return
     * @author cuiduanwu
     * @createDate 2017/10/9
     */
    Integer save(Map<String, Object> params);

    /**
     *  <desc>
     *      APP端_首页版块提交申请验证，申请人与房间业主授权关系是否已存在
     *  </desc>
     * @param appAuthRelationsPO
     * @return
     * @author cuiduanwu
     * @createDate 2017/10/9
     */
    Integer countAppUserAuth(AppAuthRelationsPO appAuthRelationsPO);

    /**
     *  <desc>
     *      根据父级业主Id及地址获取用户授权关系
     *  </desc>
     * @param params
     * @return List<AppAuthRelationsPO> 用授权关系实体对象
     */
    List<AppAuthRelationsPO> getAppAuthRelationByMap(Map<String, Object> params);

    /**
     *  <desc>
     *      根据条件查询用户授权关系数据
     *  </desc>
     * @param params
     * @return List<AppAuthRelationsPO> 用授权关系实体对象
     */
    List<AppAuthRelationsPO> getAppAuthRelationByCondition(Map<String, Object> params);

    /**
     *  <desc>
     *      更新App用户与用户授权关系数据状态
     *  </desc>
     * @param params
     * @return Integer 被影响数据数量
     */
    Integer updateAuthRelationsDataStatus(Map<String, Object> params);

    /**
     *  <desc>
     *      删除App用户与用户授权关系(逻辑删除)
     *  </desc>
     * @param params
     * @author zhangs
     * @return
     */
    Integer deleteByMap(Map<String, Object> params);

    /**
     *  <desc>
     *      删除App用户与用户授权关系
     *  </desc>
     * @param id 数据Id
     * @author zhangs
     * @return
     */
    Integer deleteById(String id);
}
